/*******************************************************************************
 * KindEditor - WYSIWYG HTML Editor for Internet Copyright (C) 2006-2011
 * kindsoft.net
 * 
 * @author Roddy <luolonghao@gmail.com>
 * @site http://www.kindsoft.net/
 * @licence http://www.kindsoft.net/license.php
 ******************************************************************************/

KindEditor.plugin('quickformat', function(K) {
	var self = this, name = 'quickformat', blockMap = K
			.toMap('blockquote,center,div,h1,h2,h3,h4,h5,h6,p');
	function getFirstChild(knode) {
		var child = knode.first();
		while (child && child.first()) {
			child = child.first();
		}
		return child;
	}
	self.clickToolbar(name, function() {
				self.focus();
				var doc = self.edit.doc, range = self.cmd.range, child = K(doc.body)
						.first(), next, nodeList = [], subList = [], bookmark = range
						.createBookmark(true);
				while (child) {
					next = child.next();
					var firstChild = getFirstChild(child);
					if (!firstChild || firstChild.name != 'img') {
						if (blockMap[child.name]) {
							child.html(child.html().replace(
									/^(\s|&nbsp;|　)+/ig, ''));
							child.css('text-indent', '2em');
						} else {
							subList.push(child);
						}
						if (!next
								|| (blockMap[next.name] || blockMap[child.name]
										&& !blockMap[next.name])) {
							if (subList.length > 0) {
								nodeList.push(subList);
							}
							subList = [];
						}
					}
					child = next;
				}
				K.each(nodeList, function(i, subList) {
							var wrapper = K('<p style="text-indent:2em;"></p>',
									doc);
							subList[0].before(wrapper);
							K.each(subList, function(i, knode) {
										wrapper.append(knode);
									});
						});
				range.moveToBookmark(bookmark);
				self.addBookmark();
			});
});

/**
 * -------------------------- abcd<br />
 * 1234<br />
 * 
 * to
 * 
 * <p style="text-indent:2em;">
 * abcd<br />
 * 1234<br />
 * </p>
 * 
 * --------------------------
 * 
 * &nbsp; abcd<img>1233
 * <p>
 * 1234
 * </p>
 * 
 * to
 * 
 * <p style="text-indent:2em;">
 * abcd<img>1233
 * </p>
 * <p style="text-indent:2em;">
 * 1234
 * </p>
 * 
 * --------------------------
 */
